# *-* coding: utf-8 *-*
"""
@author: Hekang Xu (E-mail:1092181938@qq.com)
"""

import os

from common.exception.FolderNotExsitError import FolderNotExsitError
from common.model.MultiFiles import MultiFiles

IMAGE_TYPE = (".png", ".jpg", ".jpeg")
TOTAL_NUM = 0
ALL_FILES = []


def input_image(image_folder_path):
    """
    输入图片
    :param image_folder_path:图片文件夹的根目录
    :return:文件实体类，里面包含所有的文件信息
    """
    if not os.path.exists(image_folder_path):
        raise FolderNotExsitError('[Input]input_image:folder not exsit!')
    get_all_files_path(image_folder_path)
    return MultiFiles(TOTAL_NUM, ALL_FILES)


def get_all_files_path(path):
    global TOTAL_NUM
    global ALL_FILES
    """
    获取所有文件，返回所有文件路径
    不统计隐藏文件
    :param path:文件夹根目录
    :return:所有文件
    """
    # 所有文件夹，第一个字段是次目录的级别
    dir_list = []
    # 所有文件
    file_list = []
    # 返回一个列表，其中包含在目录条目的名称(google翻译)
    files = os.listdir(path)
    # # 先添加目录级别
    # dir_list.append()
    for f in files:
        if os.path.isdir(path + '/' + f):
            # 排除隐藏文件夹。因为隐藏文件夹过多
            if f[0] == '.':
                pass
            else:
                # 添加非隐藏文件夹
                dir_list.append(f)
        if os.path.isfile(path + '/' + f):
            if f[0] == '.':
                pass
            else:
                for end in IMAGE_TYPE:
                    if os.path.splitext(f)[1] == end:
                        # 添加文件
                        file_list.append(path + '/' + f)
    for dl in dir_list:
        get_all_files_path(path + '/' + dl)
    if len(file_list) > 0:
        ALL_FILES=ALL_FILES+file_list
    TOTAL_NUM = TOTAL_NUM + len(file_list)

# if __name__ == "__main__":
#     print(input_image("/Users/xuhekang/Desktop").all_files)
